﻿Public Class FrmRemision
    Private dtProductos As DataTable

    Private Sub busquedaProducto(buscarPor As String)
        Dim oFrmBP As FrmBProducto
        oFrmBP = New FrmBProducto
        oFrmBP.BuscarPor = buscarPor
        Dim dlg As DialogResult = oFrmBP.ShowDialog()
        If dlg = DialogResult.OK Then
            Dim oProd As New GBDZafiro.Producto
            oProd = oFrmBP.oProducto
            cRemision.AddProducto(dtProductos, oProd)
            gvProducto.DataSource = dtProductos
            gvProducto.Refresh()
            gvProducto.Focus()
        End If
    End Sub
    Private Sub btBusTercero_Click(sender As System.Object, e As System.EventArgs) Handles btBusTercero.Click
        Dim oFTer As New FrmBTercero
        Dim dlg As DialogResult = oFTer.ShowDialog()
        If dlg = DialogResult.OK Then
            Dim oTer As New GBDZafiro.Tercero
            oTer = oFTer.Tercero
            tbIdTercero.Text = oTer.ID_TERCERO.ToString
            tbNit.Text = oTer.NIT
            tbDv.Text = oTer.DIG_VER
            tbRazonSocial.Text = oTer.RAZON_SOCIAL
            tbRegimen.Text = oTer.NOM_CLASE_REGIMEN
            tbTelefono.Text = oTer.TELEFONO1
            tbDireccion.Text = oTer.DIRECCION
            oFTer.Close()
        End If
    End Sub

    Private Sub FrmRemision_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        dtProductos = cRemision.crearEstructura
        tbFecha.Text = Date.Now.ToString.Substring(0, 10)
    End Sub

    Private Sub gvProducto_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gvProducto.CellDoubleClick
        Select gvProducto.Columns(e.ColumnIndex).Name
            Case "BD_REFERENCIA"
                Dim oFrmB As New FrmBBodega
                oFrmB.CodigoProducto = gvProducto.Rows(e.RowIndex).Cells("COD_PRODUCTO").Value
                Dim dlg As DialogResult = oFrmB.ShowDialog()
                If dlg = DialogResult.OK Then
                    Dim oPB As New GBDZafiro.ProductoBodega
                    oPB = oFrmB.oProductoBodega
                    gvProducto.Rows(e.RowIndex).Cells("BD_REFERENCIA").Value = oPB.codBodega
                End If
            Case "COD_PRODUCTO"
                busquedaProducto("DESCRIPCION")
        End Select
    End Sub


    Private Sub gvProducto_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gvProducto.CellValueChanged
        Select Case gvProducto.Columns(e.ColumnIndex).Name
            Case "CANTIDAD"
                If gvProducto.RowCount > 1 Then
                    ValidarExistencia(e)
                    cRemision.CalcularTotalRow(gvProducto, e)
                    tbTotal.Text = Format(cRemision.CalculaTotal(gvProducto), "c").ToString
                End If
            Case "BD_REFERENCIA"
                ValidarExistencia(e)
        End Select

    End Sub

    Public Sub ValidarExistencia(ByRef e As System.Windows.Forms.DataGridViewCellEventArgs)
        If gvProducto.RowCount > 1 Then
            Dim bd As String
            Dim cod As String
            Dim cantidad As Double
            bd = gvProducto.Rows(e.RowIndex).Cells("BD_REFERENCIA").Value
            cod = gvProducto.Rows(e.RowIndex).Cells("COD_PRODUCTO").Value
            cantidad = CDbl(gvProducto.Rows(e.RowIndex).Cells("CANTIDAD").Value)
            If Not cRemision.ValidarExistencia(bd, cod, cantidad) Then
                gvProducto.Rows(e.RowIndex).Cells("CANTIDAD").Value = 0
            End If
        End If
    End Sub

    Private Sub btBusCod_Click(sender As System.Object, e As System.EventArgs) Handles btBusCod.Click
        UCBProducto1.Visible = True
        UCBProducto1.tbCodigo.Focus()
    End Sub
    Private Sub btBusDescrip_Click(sender As System.Object, e As System.EventArgs) Handles btBusDescrip.Click
        busquedaProducto("DESCRIPCION")
    End Sub
    Private Sub btBusRef_Click(sender As System.Object, e As System.EventArgs) Handles btBusRef.Click
        busquedaProducto("REFERENCIA")
    End Sub

    Private Sub btGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btGuardar.Click
        'Validacion de Datos
        Dim mrem As New GBDZafiro.MRemision_Inv
        Dim oRes As New GBDZafiro.Resultado
        mrem.CodUsuario = vgCodUsuario
        mrem.Fecha = tbFecha.Text
        mrem.Subtotal = tbSubtotal.Text
        mrem.Total = tbTotal.Text
        mrem.Iva = tbIva.Text
        mrem.NumRemision = ""
        mrem.IdTercero = tbIdTercero.Text
        mrem.NumRemision = oRes.NumSoporte
        Dim dListRem As New List(Of GBDZafiro.DRemision_Inv)
        For i As Integer = 0 To dtProductos.Rows.Count - 1
            Dim drem As New GBDZafiro.DRemision_Inv
            drem.Cantidad = dtProductos.Rows(i)("CANTIDAD")
            If Val(drem.Cantidad) > 0 Then
                drem.CodBdProd = dtProductos.Rows(i)("BD_REFERENCIA") + "-" + dtProductos.Rows(0)("COD_PRODUCTO")
                drem.CodProducto = dtProductos.Rows(i)("COD_PRODUCTO")
                drem.CodUsuario = vgCodUsuario
                drem.Costo_Total = dtProductos.Rows(i)("COSTO_TOTAL")
                drem.Costo_Unit = dtProductos.Rows(i)("COSTO_UNIT")
                drem.FechaRemision = tbFecha.Text
                drem.NumRemision = mrem.NumRemision
                drem.Porc_Iva = dtProductos.Rows(i)("IVA")
                drem.Serial = dtProductos.Rows(i)("SERIAL")
                drem.Ip = ""
                dListRem.Add(drem)
            End If
        Next
        oRes = GBDZafiro.DRemision_Inv.Nuevo(mrem, dListRem)
        If oRes.ExisteError Then
            msnBox.msnError(oRes.Mensaje)
        Else
            'mandar a imprimir... 
            msnBox.msnInformacion(oRes.NumSoporte)
        End If

    End Sub


    'Private Sub btGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btGuardar.Click
    '    'Validacion de Datos
    '    Dim mrem As New GBDZafiro.MRemision_Inv
    '    Dim oRes As New GBDZafiro.Resultado
    '    mrem.CodUsuario = vgCodUsuario
    '    mrem.Fecha = tbFecha.Text
    '    mrem.Subtotal = tbSubtotal.Text
    '    mrem.Total = tbTotal.Text
    '    mrem.Iva = tbIva.Text
    '    mrem.NumRemision = ""
    '    mrem.IdTercero = tbIdTercero.Text
    '    oRes = GBDZafiro.MRemision_Inv.Nuevo(mrem)
    '    mrem.NumRemision = oRes.NumSoporte
    '    msnBox.msnInformacion(oRes.NumSoporte)
    '    If Not oRes.ExisteError Then
    '        For i As Integer = 0 To dtProductos.Rows.Count - 1 And Not oRes.ExisteError
    '            Dim drem As New GBDZafiro.DRemision_Inv
    '            drem.Cantidad = dtProductos.Rows(i)("CANTIDAD")
    '            If Val(drem.Cantidad) > 0 Then
    '                drem.CodBdProd = dtProductos.Rows(i)("BD_REFERENCIA") + "-" + dtProductos.Rows(0)("COD_PRODUCTO")
    '                drem.CodProducto = dtProductos.Rows(i)("COD_PRODUCTO")
    '                drem.CodUsuario = vgCodUsuario
    '                drem.Costo_Total = dtProductos.Rows(i)("COSTO_TOTAL")
    '                drem.Costo_Unit = dtProductos.Rows(i)("COSTO_UNIT")
    '                drem.FechaRemision = tbFecha.Text
    '                drem.NumRemision = mrem.NumRemision
    '                drem.Porc_Iva = dtProductos.Rows(i)("IVA")
    '                drem.Serial = dtProductos.Rows(i)("SERIAL")
    '                drem.Ip = ""
    '                oRes = GBDZafiro.DRemision_Inv.Nuevo(drem)
    '            End If
    '        Next
    '        If oRes.ExisteError Then
    '            msnBox.msnError(oRes.Mensaje)
    '        Else
    '            'mandar a imprimir... 
    '        End If
    '    Else
    '        msnBox.msnError(oRes.Mensaje)
    '    End If
    'End Sub

    Private Sub InsertarProducto(oProd As GBDZafiro.Producto)
        cRemision.AddProducto(dtProductos, oProd, 1)
        gvProducto.DataSource = dtProductos
        gvProducto.Refresh()
        tbTotal.Text = Format(cRemision.CalculaTotal(gvProducto), "c").ToString
        UCBProducto1.tbCodigo.Text = ""
        UCBProducto1.tbCodigo.Focus()
    End Sub
    Private Sub UCBProducto1_ProductoAdicionado1(sender As Object, e As System.EventArgs) Handles UCBProducto1.ProductoAdicionado
        If Not IsNothing(UCBProducto1.oProducto) Then
            InsertarProducto(UCBProducto1.oProducto)
        End If
    End Sub
End Class